The invention relates generally to the field of data processing. More specifically, the invention relates to a system and method for processing using a special purpose processor.
Desktop computers and other data processing systems typically include a Central Processing Unit (CPU) to perform arithmetic calculations, logical operations, control functions and/or other processes. Many applications are processor-intensive. In rendering three-dimensional (3D) scenes for display, for example, each image object is typically described using hundreds or thousands or even tens of thousands of geometric objects called primitives (typically triangles or other polygons). A scene may be represented by the combination of hundreds or thousands of primitives. The surface of each object may be textured and shaded to render a realistic-looking 3D image. The calculations necessary to define, position, texture, shade, and render primitives to a display device within given time constraints can overwhelm the processing capacity (or bandwidth) of the CPU.
Many approaches have been developed to off-load processing from the CPU. One approach is to add additional general purpose CPUs in a multi-processing configuration. A disadvantage of this approach is that the general purpose CPUs may not be well-suited to the computational requirements of some applications. In addition, multi-processing requires a certain amount of synchronization and management overhead, which can create inefficiencies in the primary CPU.
Instead of adding CPU's, a special-purpose processor can be used to off-load particular tasks from the CPU. In graphics applications, for example, a special-purpose processor called a Graphics Processing Unit (GPU) is sometimes used to off-load from the CPU those computations associated with the generation and/or rendering of 3D graphics. Special-purpose processors may also be used for controlling data storage disks, network communications, or other functions. Driver software, under the control of an application or Operating System (OS) is used to manage the interface to the special purpose processor.
Known systems and methods for off-loading computations from the CPU to a special-purpose processor also have various disadvantages, however. For example, in the case of graphics processing, even the GPU may become overburdened. Moreover, in known applications, when the special purpose processor fails, the entire functionality that was performed by the special purpose processor is lost.
Therefore, a need exists for a system and method that enables a special-purpose processor, such as a GPU, to be accelerated, preferably in a way that is flexible, scalable, and fault tolerant.